package com.yuw.oop.duotai;

public class TestDriver {
    public static void main(String[] args) {
        // 测试继承
        test01();
        System.out.println("--------------------------------------");
        test02();
    }

    /**
     * 多态——父类指代子类（溯型）
     */
    public static void test02() {
        // 创建一个父类Person类的实例对象
        Person per0 = new Person();
        // 调用父类的行为方法
        per0.doEating();

        System.out.println("=========");

        // 创建一个子类的实例对象
        Student stu0 = new Student();
        stu0.doEating();

        System.out.println("=========");

        // 使用父类类型指代子类【溯型 塑性】
        Person per1 = new Student();
        // 调用行为方法
        per1.doEating(); //  调用了父类的行为？还是子类的行为？ 答：调用子类的行为方法
        // 无法调用子类新增的行为方法
        // per1.doStuding();

        System.out.println("====溯型per1=====");
        // 向下溯型
        Student stu1 = (Student) per1;
        stu1.doEating();

        System.out.println("====溯型per0=====");
        // 向下溯型
        Student stu2 = (Student) per0;
        stu1.doEating();

    }

    /**
     * 多态——子类覆盖父类（重写）
     */
    public static void test01() {
        // Student 继承了Person类的部分行为属性
        Student stu0 = new Student();
        // 从Person类继承的行为
        stu0.setPerName("小明");
        stu0.doEating();
    }
}
